//获取包名
package com.codeyang.controller.system;
/**
 * 描述: TO-删除标志-DO
 *
 * @author CodeYang_Site
 * @version 2021/5/3 23:56
 *///设置一个实体变量获取我们输入的类名
//小驼峰变量

import com.codeyang.annos.Log;
import com.codeyang.domain.Dept;
import com.codeyang.dto.DeptDto;
import com.codeyang.enums.BusinessType;
import com.codeyang.service.DeptService;
import com.codeyang.utils.AjaxResult;
import com.codeyang.utils.ShiroSecurityUtils;
import com.codeyang.vo.DataGridView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping("/system/dept")
public class DeptController {

    @Autowired
    private DeptService deptService;

    /**
     * 分页查询
     *
     * @return
     */
    @GetMapping("/listDeptForPage")
    public AjaxResult listForPage(DeptDto deptDto) {
        DataGridView dataGridView = deptService.lisPage(deptDto);
        return AjaxResult.success("数据加载成功", dataGridView.getData(), dataGridView.getTotal());
    }


    /**
     * 新增数据
     *
     * @param deptDto 新增数据
     * @return 是否新增成功
     */
    @Log(title = "后台管理-部门管理-增加",businessType = BusinessType.INSERT)
    @PostMapping("/addDept")
    public AjaxResult addDept(@Validated DeptDto deptDto) {
        
        deptDto.setSimpleUser(ShiroSecurityUtils.getCurrentSimpleUser());
        boolean isSaveOk = deptService.saveDept(deptDto);
        return isSaveOk ? AjaxResult.success() : AjaxResult.fail("新增失败");
    }

    /**
     * 修改
     *
     * @param deptDto 要修改的数据
     * @return 是否修改成功
     */
    @Log(title = "后台管理-部门管理-修改",businessType = BusinessType.UPDATE)
    @PutMapping("/updateDept")
    public AjaxResult updateDept(@Validated DeptDto deptDto) {
        deptDto.setSimpleUser(ShiroSecurityUtils.getCurrentSimpleUser());
        boolean flage = deptService.updateDept(deptDto);
        return flage ? AjaxResult.success() : AjaxResult.fail("修改失败");

    }

    /**
     * 删除数据
     *
     * @param ids 根据id删除数据
     * @return 是否删除成功
     */
    @DeleteMapping("/deleteDeptByIds/{ids}")
    public AjaxResult deleteDeptByIds(@PathVariable("ids") Long[] ids) {
        boolean flag = deptService.removeByIds(Arrays.asList(ids));
        return flag ? AjaxResult.success() : AjaxResult.fail("删除失败");
    }

    /**
     * 根据id查询数据
     *
     * @param id 数据的id
     * @return 数据的实体
     */
    @GetMapping("/getDeptById/{id}")
    public AjaxResult getOne(@PathVariable("id") Long id) {
        return AjaxResult.success(deptService.getById(id));
    }

    /**
     * 部门全查询
     * @return
     */
    @GetMapping("/selectAllDept")
    public AjaxResult selectAllDept(){
        List<Dept> depts = deptService.selectAllDept();
        return AjaxResult.success(depts);
    }

}
